<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>

    // 构造函数中的this,指向每次构造函数在执行过程中创建的实例化对象
    // 创建构造函数是 不能使用箭头函数

    // function Fn(a, b) {

    //     if (this === window) {
    //         console.log("普通函数调用", a, b);
    //         return a + "" + b
    //     } else if (this.constructor === Fn) { // this instanceof Fn
    //         // {}
    //         // this -> {}
    //         console.log("构造函数调用");

    //         this.a = a;
    //         this.b = b;

    //         // return this;
    //     }

    // }

    // var result = Fn(1, 2);
    // console.log(result);
    // var result = new Fn(3, 4);
    // console.log(result);


    function Fn(a, b) {
        // {}
        // {}[[Prototype]] = Fn.prototype; 
        // this -> {}

        this.a = a;
        this.b = b;

        // return this;
    }

    Fn.prototype = {
        constructor: Fn,
        sum: function () {
            // 
            return this.a + this.b;
        }

    }
    console.dir(Fn)


    var o = new Fn(1, 2);
    console.log(o);
    // console.log(o.constructor);

    var result = o.sum();
    console.log(result);

    // var fn = function () {
    //     console.log(this);
    // }
    // var arr = [1, 2, 3, fn]

    // fn()
    // arr[3]();



</script>

</html>